﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using HHo_Negocio;
using HHo_Model;


public partial class wfRegInfTrab : UISeguridad
{

    #region variables
    GestorTrabajos oGesTrab;
    GestorTblParametros oGesParam;
    private E_Usuario eUser;

    #endregion

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["UsuarioAuth"] != null)
        {
            eUser = (E_Usuario)Session["UsuarioAuth"];

            if (Request.Form["__eventtarget"] == "cambiosRealizados")
            {
                GestorTrabajos oGesTrab = new GestorTrabajos();
                gvTrab.DataSource = oGesTrab.ConsultarTrabajoPorInforme(Int32.Parse(hid_IdInfTra.Value));
                gvTrab.DataBind();        //PoblarGridTrabajos();
            }
            if (!Page.IsPostBack)
            {
                //Validar si tiene permiso a la pagina actual
                if (!EstaPermitidoPagina(eUser, "wfRegInfTrab.aspx"))
                {
                    ShowMessage("Aviso, sus credenciales no cuentan con el permiso para accesar");
                    Response.Redirect("../general/wfIndex.aspx", false);
                }

                ListItem lst = new ListItem();
                lst.Text = "Seleccione";
                lst.Value = "99999";

                oGesParam = new GestorTblParametros();


                ddl_ProdLin.DataSource = oGesParam.ListaParametroPorGrupo(6);
                ddl_ProdLin.DataTextField = "ParametroValor";
                ddl_ProdLin.DataValueField = "ParametroID";
                ddl_ProdLin.DataBind();

                ddlEstAvion.DataSource = oGesParam.ListaParametroPorGrupo(4);
                ddlEstAvion.DataTextField = "ParametroValor";
                ddlEstAvion.DataValueField = "ParametroID";
                ddlEstAvion.DataBind();
                ddlEstAvion.Items.Add(lst);
                ddlEstAvion.SelectedValue = "99999";
            }
        }
    }

    

    private bool ValidarDatosConsultaInforme()
    {
        if((ddl_ProdLin.SelectedValue.ToString().Length < 1) && (txtFecInfo.Text.Length < 1) && (txtMatAvi.Text.Length<1))
          return false;
        else
          return true;
    }


    
    
    //TODO -- falta utilizar este metodo, esta completo sera utilizado cuando estemos añadiendo trabajos
    private void ConsultarInformeTrabajo(int IdInfTra)
    {
        HHo_Model.E_Trabajo oEntidadTrabajo;
        string strMatAvion;
        //oGestTrab = new GestorTrabajos();

        strMatAvion = HH_Toolkit.AsegurarFormatoMatricula(txtMatAvi.Text);

        //oEntidadTrabajo = oGestTrabajo.ConsultarInformeTrabajo(IdInfTra);
        //ClientScriptManager oCS = Page.ClientScript;
        //if (oEntidadTrabajo.Id != 0)
        //{
        //    //TODO falta poblar los campos con el trabajo
        //    PoblarControles(oEntidadTrabajo);            
        //    oCS.RegisterStartupScript(this.GetType(), "Aviso", "alert('Existe el Trabajo');", true);
        //}
        //else
        //{
        //    oCS.RegisterStartupScript(this.GetType(), "Aviso", "alert('No Existe el Trabajo');", true);
        //}
    }


    private void PoblarControles(E_Trabajo oEntTrabajo)
    {
        ddl_ProdLin.SelectedValue = oEntTrabajo.IdArea.ToString();

        txtMatAvi.Text = HH_Toolkit.PresentarMatriculaSinPrefCC(oEntTrabajo.MatriculaAvion);
        txtFecVuelo.Text = oEntTrabajo.FechaVuelo.ToShortDateString();
        txtETA.Text = oEntTrabajo.NumeroETA;
        txtETD.Text = oEntTrabajo.NumeroETD;

        divDatManETA.Style.Remove("display");
        divDatManETA.Style.Add("display","none");
        lblHraETA.Visible = true;
        lblHraETA.Text = oEntTrabajo.HoraLlegada.ToString("dd/MM/yyyy HH:m:s");

        divDatManETD.Style.Remove("display");
        divDatManETD.Style.Add("display","none");
        lblHraETD.Visible = true;
        lblHraETD.Text = oEntTrabajo.HoraSalida.ToString("dd/MM/yyyy HH:m:s");

        if (oEntTrabajo.EsRegistroManual)
            hid_HabIngManual.Value = "manual";

        if (oEntTrabajo.EsTrabMantto)
            chkTransMantto.Checked = true;
        else
            chkTransMantto.Checked = false;
        

        GestorQA oQA = new GestorQA();

        if (oEntTrabajo.IdSupervisor > 0)
        {
            txtSuperv.Text = oQA.ObtenerDatosPersonaPorId(oEntTrabajo.IdSupervisor);
        }

        if (oEntTrabajo.IdTLeader > 0)
        {
            txtTLeader.Text = oQA.ObtenerDatosPersonaPorId(oEntTrabajo.IdTLeader);
        }

        if (oEntTrabajo.IdEncargado > 0)
        {
            txtEncar.Text = oQA.ObtenerDatosPersonaPorId(oEntTrabajo.IdEncargado);
        }
        
        txtTurno.Text = oEntTrabajo.Turno;

        if (oEntTrabajo.IdEstadoAvion >0)
            ddlEstAvion.SelectedValue = oEntTrabajo.IdEstadoAvion.ToString();

        
    }

    private void LimpiarControles()
    {
        //TODO LIMPIA CONTROLES        
        txtFecVuelo.Text = "";
        txtETA.Text = "";
        txtETD.Text = "";
        txtHraETA.Text = "";
        txtHraETD.Text = "";
        txtSuperv.Text = "";
        txtTLeader.Text = "";
        txtEncar.Text = "";
        txtTurno.Text = "";
        txtFecETA.Text = "";
        txtFecETD.Text = "";
        chkTransMantto.Checked = false;
        imgCalcularTATTEM.Enabled = false;

        ddlEstAvion.SelectedValue = "99999";

        lblHraETA.Text = "";
        lblHraETD.Text = "";
        lblHraETA.Visible = false;
        lblHraETD.Visible = false;
        lblTATTEM.Text = "";
        lblEstInf.Text = "";

        //TODO limpiar GridView
        gvTrab.DataSource = null;
        gvTrab.DataBind();
        //gvTrab.Visible = false;

        hid_IdInfTra.Value="";
        hid_HabIngManual.Value = "";

    }

    private void HabilitarControlesEdicion()
    {
    }

    private void CancelarEdicionControles(bool EstaDesabilitado)
    {
        // true para deshabilitar controles
        txtFecVuelo.ReadOnly = EstaDesabilitado;
        txtETA.ReadOnly = EstaDesabilitado;
        txtETD.ReadOnly = EstaDesabilitado;
        txtTurno.ReadOnly = EstaDesabilitado;
        txtEncar.ReadOnly = EstaDesabilitado;
        txtTLeader.ReadOnly = EstaDesabilitado;
        txtSuperv.ReadOnly = EstaDesabilitado;
        ddlEstAvion.Enabled = !EstaDesabilitado;        
    }


    protected void gvTrab_RowDataBound(object sender, GridViewRowEventArgs e)
    {      
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Cells[6].Text = "<img src='../styles/a-main/AddDoc.gif' border='0' onclick=\"javascript:popUpOpenSelTrab('" + DataBinder.Eval(e.Row.DataItem, "Id").ToString() + "','" + DataBinder.Eval(e.Row.DataItem, "SecuenciaTrabajo").ToString() + "');\" />";//Seleccionar
            //mostrar los nombres de componentes o tipos de trabajo
            if (DataBinder.Eval(e.Row.DataItem, "ComponenteId").ToString() != "0")
            {
                e.Row.Cells[2].Text = DataBinder.Eval(e.Row.DataItem, "DescTrabajo").ToString();
                e.Row.Cells[3].Text = DataBinder.Eval(e.Row.DataItem, "CompDesc").ToString();
                e.Row.Cells[4].Text = DataBinder.Eval(e.Row.DataItem, "TRHH").ToString();

            //if(DataBinder.Eval(e.Row.DataItem,"TRHH").ToString().Length > 0)
            //{
            //    e.Row.Cells[4].Text = DataBinder.Eval(e.Row.DataItem, "TEstimComponente").ToString();
            //}  
            }
            else
            {
                e.Row.Cells[2].Text = DataBinder.Eval(e.Row.DataItem, "TipTraDesc").ToString();
                e.Row.Cells[3].Text = "---";
                e.Row.Cells[4].Text = DataBinder.Eval(e.Row.DataItem, "TRHH").ToString();
                //if (DataBinder.Eval(e.Row.DataItem, "TRHH").ToString().Length > 0)
                //{
                //    e.Row.Cells[4].Text = DataBinder.Eval(e.Row.DataItem, "TEstimTipoTrab").ToString();
                //}              
            }
            //Evaluar si ya ha sido registrado para pintar de verde la celda
            if (Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "UserInfo").ToString()) > 0)
            {
                //e.Row.CssClass.Insert(0, "IndicadorFila");
                e.Row.Style.Add("background-color", "#b9c9fe");
                //e.Row.Style.Add("border-top","4px solid #aabcfe");
                //e.Row.Style.Add("border-bottom","1px solid #fff;");
            }

        }
    }



    //private void DeshabilitarCierreReg()
    //{
    //    lblEstInf.Text = "INFORME CERRADO";
    //    lblEstInf.CssClass = "et_InfCerrado";
    //    imgCerrarInforme.Enabled = false;
    //}

    private string UnirFechaHora(string strFechaConFormato, string strHoraConFormato)
    {        
        string[] strFechaSinFormato;
        strFechaSinFormato = new string[3];
        strFechaSinFormato = strFechaConFormato.Split('/');

        string strFechaHora = strFechaSinFormato[2] + strFechaSinFormato[1] + strFechaSinFormato[0];

        return strFechaHora = strFechaHora + " " + strHoraConFormato;

    }


    protected void imgRegInforme_Click(object sender, ImageClickEventArgs e)
    {
        RegistraActualizarDatos();
    }

    private void RegistraActualizarDatos()
    {
        oGesTrab = new GestorTrabajos();
        oGesParam = new GestorTblParametros();
        string MensajeError;        
        MensajeError = "";
        
        E_Usuario eUser = (E_Usuario)Session["UsuarioAuth"];
        E_Trabajo oTrabajo = new E_Trabajo();

        if (txtFecVuelo.Text.Length == 10)
            oTrabajo.FechaVuelo = DateTime.Parse(txtFecVuelo.Text);
        else
            MensajeError = "La fecha de vuelo debe ser ingresada";

        if (txtETA.Text.Length > 0)
            oTrabajo.NumeroETA = txtETA.Text;
        else
            MensajeError += "El vuelo de llegada es requerido ";

        if (txtETD.Text.Length > 0)
            oTrabajo.NumeroETD = txtETD.Text;
        else
            MensajeError += "El vuelo de salida es requerido ";


        if (txtFecETA.Enabled == false)
        {
            //obtener datos del lblHraETA
            try
            {
                if (DateTime.Parse(lblHraETA.Text) != StringConstantes.DT_FEC_INVALID)
                {
                    oTrabajo.HoraLlegada = DateTime.Parse(lblHraETA.Text);
                }
                else
                {
                    ShowMessage("ETA_FecInvalid","ERROR La fecha ETA no es valida");
                    return;
                }
            }
            catch (Exception ex)
            {
                ShowMessage("Exception_HraETA", "ERROR al convertir la hora ETA " + ex.Message);
                return;
            }
        }
        else
        {
            try
            {
                if (DateTime.Parse(txtFecETA.Text + " " + txtHraETA.Text) != StringConstantes.DT_FEC_INVALID)
                    oTrabajo.HoraLlegada = DateTime.Parse(txtFecETA.Text + " " + txtHraETA.Text);
                else
                {
                    ShowMessage("ETA_FecInvalid", "ERROR, la fecha de vuelo ingresada no es valida");
                    return;
                }
            }
            catch (Exception ex)
            {
                ShowMessage("Exception_ETA","No se puede convertir el texto de ETA a formato fecha y hora " + ex.Message);
                return;
            }
        }


        if (txtFecETD.Enabled == false)
        {
            //obtener datos del lblHraETD
            try
            {
                if (DateTime.Parse(lblHraETD.Text) != StringConstantes.DT_FEC_INVALID)
                {
                    oTrabajo.HoraSalida = DateTime.Parse(lblHraETD.Text);
                }
                else
                {
                    ShowMessage("ETD_FecInvalid", "ERROR La fecha ETD no es valida");
                    return;
                }
            }
            catch (Exception ex)
            {
                ShowMessage("Exception_HraETD", "ERROR al convertir la hora ETD " + ex.Message);
                return;
            }
        }
        else
        {
            try
            {
                if (DateTime.Parse(txtFecETD.Text + " " + txtHraETD.Text) != StringConstantes.DT_FEC_INVALID)
                    oTrabajo.HoraSalida = DateTime.Parse(txtFecETD.Text + " " + txtHraETD.Text);
                else
                {
                    ShowMessage("ETA_FecInvalid", "ERROR, la fecha de vuelo ingresada no es valida");
                    return;
                }
            }
            catch (Exception ex)
            {
                ShowMessage("Exeption_ETD","No se puede convertir el texto ETD a formato fecha y hora");
                return;
            }
        }

        if (ddlEstAvion.SelectedValue != StringConstantes.DDL_SELEC_VALUE)
        {
            oTrabajo.IdEstadoAvion = Int32.Parse(ddlEstAvion.SelectedValue);
        }
        else
        {
            MensajeError += "El estado del avion es requerido ";
        }

        if (txtTLeader.Text.Trim().Length == 0)
            MensajeError += "Debe Ingresar el TLeader ";
        else
        {
            oTrabajo.TleaderCSV = txtTLeader.Text;
            string[] strTLeader;
            strTLeader = txtTLeader.Text.Split(',');
            if (strTLeader.Length > 3)
                oTrabajo.IdTLeader = Int32.Parse(strTLeader[3]);
            else
            {
                //int numChar = strTLeader[2].IndexOf(')') - strTLeader[2].IndexOf('(');
                oTrabajo.IdTLeader = IdSubstring(strTLeader[1]);//Int32.Parse(strTLeader[2].Substring(strTLeader[2].IndexOf('('), numChar));
            }
        }

        if (txtSuperv.Text.Trim().Length == 0)
            MensajeError += "Debe Ingresar el Supervisor ";
        else
        {
            oTrabajo.SuperCSV = txtSuperv.Text;
            string[] strSuper;
            strSuper = txtSuperv.Text.Split(',');

            if (strSuper.Length > 3)
                oTrabajo.IdSupervisor = Int32.Parse(strSuper[3]);
            else
            {
                oTrabajo.IdSupervisor = IdSubstring(strSuper[1]);
            }
        }

        if (txtEncar.Text.Trim().Length == 0)
            MensajeError += "Debe Ingresar el Encargado ";
        else
        {
            oTrabajo.EncargadoCSV = txtEncar.Text;
            string[] strEncarg;
            strEncarg = txtEncar.Text.Split(',');

            if (strEncarg.Length > 3)
                oTrabajo.IdEncargado = Int32.Parse(strEncarg[3]);
            else
            {
                oTrabajo.IdEncargado = IdSubstring(strEncarg[1]);
            }
        }

        //TODO - PASAR A DROPDOWNLIST TURNO
        //Validar Turno
        if (txtTurno.Text.Length > 0)
        {
            txtTurno.Text = txtTurno.Text.ToUpper();
            if ((txtTurno.Text.Trim() == "A") || (txtTurno.Text.Trim() == "B"))
            {
                oTrabajo.Turno = txtTurno.Text;
            }
            else
            {
                MensajeError += "debe ingresar A o B para el turno ";
            }
        }
        else
        {
            MensajeError += "ERROR: el turno no debe estar vacio ";
        }

        if (hid_HabIngManual.Value.Length >= 6)
            oTrabajo.EsRegistroManual = true;
        else
            oTrabajo.EsRegistroManual = false;


        oTrabajo.EsTrabMantto = chkTransMantto.Checked;

        //TODO - Cambiar el usuario que registra
        oTrabajo.UserRegistra = eUser.UsrId;
        //ESTADO SIEMPRE EN REGISTRO
        oTrabajo.IdEstadoInforme = oGesParam.ObtenerParamID(8, StringConstantes.PAR_COD_INF_EST_REGISTRO);


        //si hay errores notificar al usuario
        if (MensajeError.Length > 0)
        {
            ShowMessage("ERRORES_RegistroTrab", "Se han encontrado los siguientes errores: " + MensajeError);
        }
        else
        {
            //Actualizar un informe pre-existente
            //if ((hid_IdInfTra.Value.Length > 0) && (imgRegInforme.ToolTip == "Actualizar Informe"))
            if ((hid_IdInfTra.Value.Length > 0))
            {
                //Comprobar Datos
                oTrabajo.Id = Int32.Parse(hid_IdInfTra.Value);
                if (oGesTrab.ActualizarDatosGnrlTrabajo(oTrabajo) > 0)
                {
                    ShowMessage("Aviso", "Se ha actualizado correctamente este informe");
                }
                //imgEditInforme.ToolTip = "Activar para modificar la programación";
            }
            else
            {
                //Es un nuevo trabajo
                oTrabajo.IdArea = Int32.Parse(ddl_ProdLin.SelectedValue);
                oTrabajo.MatriculaAvion = HH_Toolkit.AsegurarFormatoMatricula(txtMatAvi.Text);
                oTrabajo.FechaInforme = Convert.ToDateTime(txtFecInfo.Text);
                oTrabajo.EsProgramacion = false;
                try
                {
                    hid_IdInfTra.Value = oGesTrab.RegistrarInformeTrabajo(oTrabajo).ToString();
                    ShowMessage("Confirmacion_Registro", "Se ha grabado correctamente los datos del trabajo");                    
                }
                catch (Exception ex)
                {
                    //ShowMessage("ExceptionReg","ERROR DEL SISTEMA " + ex.Message);
                    Response.Write("ERROR:<br />Información Técnica: " + ex.Message);
                }
            }
            HabilitarGrabacion(false);
            HabilitarIngresoTrabajos(true);
            HabilitarModificacion(true);
            HabilitarCambiarOrden(true);
            CancelarEdicionControles(true);
            HabilitarCierre(true);
            HabilitarCalculoTATTEM(false);
        }
    }

    private int IdSubstring(string str)
    {
        int numChar;
        numChar = str.IndexOf(')') - (str.IndexOf('(') + 1);
        return Int32.Parse(str.Substring(str.IndexOf('(') + 1, numChar));
    }


    protected void imgCerrarInforme_Click(object sender, ImageClickEventArgs e)
    {
        oGesTrab = new GestorTrabajos();
        E_Usuario eUser = (E_Usuario)Session["UsuarioAuth"];
        try
        {
            if (oGesTrab.CambiarEstadoProgramacion(Int32.Parse(hid_IdInfTra.Value), eUser.UsrId, Int32.Parse(hid_IdInfTra.Value), "CE") > 0)//  CerrarProgramacion(Int32.Parse(hid_IdInfTra.Value), 1) > 0)
            {
                lblEstInf.Text = "INFORME CERRADO";
                lblEstInf.CssClass = "et_InfCerrado";
                HabilitarCierre(false);
                HabilitarModificacion(false);
                HabilitarIngresoTrabajos(false);
                HabilitarCambiarOrden(false);
                ShowMessage("Confirm_Cierre", "CONFIRMACION: Se ha cerrado el trabajo");
            }
            else
            {
                ShowMessage("ERROR_Cierre", "No se ha podido cerrar el trabajo");
            }
        }
        catch (Exception ex)
        {
            ShowMessage("Exception_Cierre", "ERROR del Sistma: " + ex.Message);
        }        
    }

    
    protected void imgConsultaInf_Click(object sender, ImageClickEventArgs e)
    {
        bool ExisteMatricula = false;

        LimpiarControles();

        divTrabajos.Style.Remove("display");
        divTrabajos.Style.Add("display", "none");

        HabilitarGrabacion(false);
        HabilitarModificacion(false);
        HabilitarCierre(false);
        HabilitarCalculoTATTEM(false);
        HabilitarCambiarOrden(false);
        CancelarEdicionControles(true);
        HabilitarIngresoTrabajos(false);
        HabilitarConsultaPizarra(false);

        try
        {
            //Comprobar si tienen datos minimos
            if (ValidarDatosConsultaInforme())
            {
                HHo_Model.E_Trabajo oEntidadTrabajo;
                string strMatAvion;
                oGesTrab = new GestorTrabajos();
                oGesParam = new GestorTblParametros();

                strMatAvion = HH_Toolkit.AsegurarFormatoMatricula(txtMatAvi.Text);

                //Comprobar la existencia de Matricula en el PMS
                try
                {
                    ExisteMatricula = HH_Toolkit.ValidarExistenciaMat(strMatAvion);
                }
                catch (Exception ex)
                {
                    ShowMessage("Exeption_Mat", "ERROR DEL SISTEMA " + ex.Message);
                    return;
                }

                if (ExisteMatricula)
                {
                    oEntidadTrabajo = oGesTrab.ConsultarInformeTrabajo(Int32.Parse(ddl_ProdLin.SelectedItem.Value), Convert.ToDateTime(txtFecInfo.Text), strMatAvion, 0);

                    //Si no existe el registro o si esta eliminado permitir ingreso de trabajos
                    if (oEntidadTrabajo.Id == 0 || oEntidadTrabajo.IdEstadoInforme == oGesParam.ObtenerParamID(8, "EL"))
                    {
                        CancelarEdicionControles(false);
                        imgRegInforme.ToolTip = "Nuevo Informe";
                        HabilitarGrabacion(true);
                        HabilitarConsultaPizarra(true);
                        ShowMessage("Aviso_Nuevotrab", "Ingresando datos como trabajo no programado");
                    }
                    else
                    {
                        hid_IdInfTra.Value = oEntidadTrabajo.Id.ToString();
                        PoblarControles(oEntidadTrabajo);
                        lblEstInf.Text = oGesParam.ObtenerValorParamtroPorID(oEntidadTrabajo.IdEstadoInforme);

                        //Poblar Los detalles del trabajos
                        divTrabajos.Style.Remove("display");
                        divTrabajos.Style.Add("display", "block");
                        gvTrab.DataSource = oGesTrab.ConsultarTrabajoPorInforme(oEntidadTrabajo.Id);
                        gvTrab.DataBind();

                        //Si el estado es cerrado no se puede hacer nada con el regstro
                        if (oEntidadTrabajo.IdEstadoInforme == oGesParam.ObtenerParamID(8, StringConstantes.PAR_COD_INF_EST_CERRADO))
                        {                            
                            ShowMessage("Info_Cerrado", "El informe esta cerrado, este estado impide realizar cualquier modificación al registro");
                            
                        }
                        else
                        {
                            //SI ESTA PROGRAMADO O HABILITADO SE DEBE PERMITIR EL REGISTRO
                            if (oEntidadTrabajo.IdEstadoInforme == oGesParam.ObtenerParamID(8, StringConstantes.PAR_COD_INF_EST_HABILITADO) ||
                                oEntidadTrabajo.IdEstadoInforme == oGesParam.ObtenerParamID(8, StringConstantes.PAR_COD_INF_EST_PROGRAMADO))
                            {
                                HabilitarGrabacion(true);
                                CancelarEdicionControles(false);
                                ShowMessage("Habilita_Llenado","Validación correcta, puede registrar el informe");
                                HabilitarConsultaPizarra(true);
                            }
                            else
                            {
                                //Si estado es registrado no se puede modificar directamente
                                if (oEntidadTrabajo.IdEstadoInforme == oGesParam.ObtenerParamID(8, StringConstantes.PAR_COD_INF_EST_REGISTRO))
                                {
                                    HabilitarModificacion(true);
                                    ShowMessage("Info_Info", "Registro ya fué informado anteriormente");
                                    HabilitarCierre(true);
                                    HabilitarCambiarOrden(true);
                                    HabilitarIngresoTrabajos(true);
                                }
                            }
                        }
                    }
                }
                else
                {
                    ShowMessage("Mat_NoExiste", "ERROR: No existe la matricula del avión");
                }
            }
            else
            {
                ShowMessage("Consulta_FaltaDato", "Debe ingresar la fecha de informe y la matrícula del avión");
            }
            img_CambiarOrden.ToolTip = "Cambiar Orden";
        }
        catch (Exception ex)
        {
            ShowMessage("Exception_Consultar", "ERROR del Sistema: " + ex.Message);
        }
    }

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        if ((txtETA.Text.Length > 0) && (txtETD.Text.Length > 0))
        {
            GestorPizarra oPizarra;
            string strMatAvion;
            bool HabETA = false;
            bool HabETD = false;
            oPizarra = new GestorPizarra();
            string DatosArribo;
            //DatosArribo = new string;
            string[] strFecVuelo;
            strFecVuelo = new string[3];
            strFecVuelo = txtFecVuelo.Text.Split('/');
            string MensajePersonalizado = "";

            string strFecConsultaVuelo = strFecVuelo[2] + strFecVuelo[1] + strFecVuelo[0];
            strMatAvion = HH_Toolkit.AsegurarFormatoMatricula(txtMatAvi.Text);
            try
            {
                MensajePersonalizado = "Consultando TAT TEM";
                DatosArribo = oPizarra.ObtETAETDTATTEM(strFecConsultaVuelo.ToString(), strMatAvion, txtETA.Text, txtETD.Text);
                string[] DatosArriboSplit;
                DatosArriboSplit = DatosArribo.Split('|');

                if ((DatosArriboSplit[0].Length <= 0) && (DatosArriboSplit[1].Length <= 0))
                {
                    HabETA = true;
                    HabETD = true;
                    ShowMessage("Piz_NoData","No hay datos en la pizarra para los números de vuelo ingresados");                    
                    hid_HabIngManual.Value = "manualETAETD";
                }
                else
                {
                    if (DatosArriboSplit[0].Length > 0)
                    {
                        lblHraETA.Text = DatosArriboSplit[0];
                        lblHraETA.Visible = true;
                        HabETA = false;
                    }
                    else
                    {
                        HabETA = true;
                        ShowMessage("Piz_NoETA","No existen datos del ETA en Pizarra, ingreselo manualmente");
//                        lblDatPizMensaje.Text = "No existe información del vuelo de llegada, se habilita el ingreso manual";
                        hid_HabIngManual.Value = "manualETA";
                    }

                    if (DatosArriboSplit[1].Length > 0)
                    {
                        lblHraETD.Text = DatosArriboSplit[1];
                        lblHraETD.Visible = true;
                        HabETD = false;
                    }
                    else
                    {
                        HabETD = true;
                        ShowMessage("Piz_NoETD","No existen datos del ETD en Pizarra, ingreselo manualmente");
//                        lblDatPizMensaje.Text = "No existe información del vuelo de salida, se habilita el ingreso manual";
                        hid_HabIngManual.Value = "manualETD";
                    }
                }

                //MostrarTATTEM(Convert.ToDateTime(DatosArriboSplit[0]), Convert.ToDateTime(DatosArriboSplit[1]), chkTransMantto.Checked);
                HabilitarIngresoManual(HabETA, HabETD);
                HabilitarCalculoTATTEM(true);
            }
            catch (Exception ex)
            {
                ShowMessage("Exception_Piz", "ERROR: " + MensajePersonalizado + " " + ex.Message);
            }
        }
        else
        {
            ShowMessage("ValidETAETD","ERROR: No se ha ingresado la información  necesaria para consultar Pizarra");
        }
    }

    private void HabilitarIngresoManual(bool HabilitarETA, bool HabilitarETD)
    {
        if (HabilitarETA)
        {
            txtFecETA.Visible = true;
            txtHraETA.Visible = true;
            txtFecETA.Enabled = true;
            txtHraETA.Enabled = true;

            divDatPizETA.Style.Remove("Display");
            divDatPizETA.Style.Add("Display", "none");

            divDatManETA.Style.Remove("Display");
            divDatManETA.Style.Add("Display", "block");

            lblHraETA.Visible = false;
        }
        else
        {
            txtFecETA.Visible = false;
            txtHraETA.Visible = false;
            txtFecETA.Enabled = false;
            txtHraETA.Enabled = false;


            divDatPizETA.Style.Remove("Display");
            divDatPizETA.Style.Add("Display", "block");

            divDatManETA.Style.Remove("Display");
            divDatManETA.Style.Add("Display", "none");

            lblHraETA.Visible = true;
        }

        if (HabilitarETD)
        {
            txtFecETD.Visible = true;
            txtHraETD.Visible = true;
            txtFecETD.Enabled = true;
            txtHraETD.Enabled = true;

            divDatPizETD.Style.Remove("Display");
            divDatPizETD.Style.Add("Display", "none");

            divDatManETD.Style.Remove("Display");
            divDatManETD.Style.Add("Display", "block");
            lblHraETD.Visible = false;
        }
        else
        {
            txtFecETD.Visible = false;
            txtHraETD.Visible = false;
            txtFecETD.Enabled = false;
            txtHraETD.Enabled = false;

            divDatPizETD.Style.Remove("Display");
            divDatPizETD.Style.Add("Display", "block");

            divDatManETD.Style.Remove("Display");
            divDatManETD.Style.Add("Display", "none");

            lblHraETD.Visible = true;
        }
        imgCalcularTATTEM.Visible = true;
    }


    protected void txtETA_TextChanged(object sender, EventArgs e)
    {

    }

    



    protected void img_CambiarOrden_Click(object sender, ImageClickEventArgs e)
    {
        oGesTrab = new GestorTrabajos();
        ClientScriptManager cs = Page.ClientScript;        
        //GestorTrabajos oGesTrab;
        DataKey Key;
        int TrabajoId;
        short IdSeq, SeqTrab;

        if (img_CambiarOrden.ToolTip == "Cambiar Orden")
        {
            img_CambiarOrden.ToolTip = "Actualizar Orden";
            img_CambiarOrden.ImageUrl = "../styles/a-main/gridGrabarOrden.png";
            imgCancelOrdenTrab.Visible = true;

            foreach (GridViewRow row in gvTrab.Rows)
            {
                Label lblOrden = (Label)row.FindControl("lblOrden");
                lblOrden.Visible = false;
                DropDownList ddlOrden = (DropDownList)row.FindControl("ddlOrden");
                ddlOrden.SelectedValue = lblOrden.ToolTip;
                ddlOrden.Visible = true;
            }
        }
        else
        {
            int[] arrayOrden = new int[50];
            int i=0;
            bool isRepetido = false;
            if (gvTrab.Rows.Count > 0)
            {
                //Validar correcto ingreso del orden
                //correcto = No repitencias                
                    foreach (GridViewRow oRow in gvTrab.Rows)
                    {
                        DropDownList ddlOrden = (DropDownList)oRow.FindControl("ddlOrden");
                        ddlOrden.Visible = false;
                        for (int j = 0; j < 50; j++)
                        {
                            if (arrayOrden[j] == Int32.Parse(ddlOrden.SelectedValue.ToString()))
                            {
                                arrayOrden[i] = Int32.Parse(ddlOrden.SelectedValue.ToString());
                                isRepetido = true;
                                cs.RegisterStartupScript(this.GetType(),"ERROR","alert('ERROR: se ha encontrado secuencias repetidas')",true);

                                /* poner en off la grid */
                                img_CambiarOrden.ImageUrl = "../styles/a-main/gridCambiarOrden.png";
                                imgCancelOrdenTrab.Visible = false;
                                img_CambiarOrden.ToolTip = "Cambiar Orden";
                                gvTrab.DataSource = oGesTrab.ConsultarTrabajoPorInforme(Int32.Parse(hid_IdInfTra.Value));
                                gvTrab.DataBind();

                                return;

                            }                            
                        }
                        arrayOrden[i] = Int32.Parse(ddlOrden.SelectedValue.ToString());                            
                        i += 1;
                    }
            }

            img_CambiarOrden.ImageUrl = "../styles/a-main/gridCambiarOrden.png";
            imgCancelOrdenTrab.Visible = false;

            foreach (GridViewRow row in gvTrab.Rows)
            {
                Key = gvTrab.DataKeys[row.RowIndex];

                TrabajoId = Int32.Parse(Key[0].ToString());
                IdSeq = Int16.Parse(Key[1].ToString());

                Label lblOrden = (Label)row.FindControl("lblOrden");
                lblOrden.Visible = true;
                DropDownList ddlOrden = (DropDownList)row.FindControl("ddlOrden");
                ddlOrden.Visible = false;
                SeqTrab = Int16.Parse(ddlOrden.SelectedValue.ToString());

                oGesTrab = new GestorTrabajos();
                try
                {
                    oGesTrab.ActualizarOrdenTrabajo(TrabajoId, IdSeq, SeqTrab);
                }
                catch (Exception ex)
                {
                    ShowMessage("ERROR: al actualizar el orden de: " + Key[0].ToString());
                }
            }
            img_CambiarOrden.ToolTip = "Cambiar Orden";
            gvTrab.DataSource = oGesTrab.ConsultarTrabajoPorInforme(Int32.Parse(hid_IdInfTra.Value));
            gvTrab.DataBind();
        }
    }
    protected void imgCancelOrdenTrab_Click(object sender, ImageClickEventArgs e)
    {
        oGesTrab = new GestorTrabajos();
        img_CambiarOrden.ToolTip = "Cambiar Orden";
        img_CambiarOrden.ImageUrl = "../styles/a-main/gridCambiarOrden.png";
        imgCancelOrdenTrab.Visible = false;
        gvTrab.DataSource = oGesTrab.ConsultarTrabajoPorInforme(Int32.Parse(hid_IdInfTra.Value));
        gvTrab.DataBind();
    }
    protected void imgEditInforme_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            if (imgEditInforme.ToolTip == "Actualizar Informe")
            {
                RegistraActualizarDatos();
                imgEditInforme.ToolTip = "Click para activar edición";
                HabilitarModificacion(false);
                HabilitarCalculoTATTEM(false);
            }
            else
            {
                CancelarEdicionControles(false);
                imgEditInforme.ToolTip = "Actualizar Informe";
                ShowMessage("Confirm_EdidionDatos", "Puede modificar los datos");
                HabilitarConsultaPizarra(true);
            }
        }
        catch (Exception ex)
        {
            ShowMessage("Exception_Edit", "ERROR del sistema: " + ex.Message);
        }        
    }
    protected void imgCalcularTATTEM_Click(object sender, ImageClickEventArgs e)
    {
        if ((txtFecETA.Text.Trim().Length + txtHraETA.Text.Trim().Length < 10) && (lblHraETA.Text.Length < 10))
        {
            ShowMessage("ERROR: No esta definido la hora de llegada");
            HabilitarCalculoTATTEM(false);
        }
        else
        {
            if ((txtFecETD.Text.Trim().Length + txtHraETD.Text.Trim().Length < 10) && (lblHraETD.Text.Length < 10))
            {
                ShowMessage("ERROR: No esta definido la hora de salida");
                HabilitarCalculoTATTEM(false);
            }
            else
            {

                DateTime dt_HoraLlegada = Convert.ToDateTime("01/01/0001");
                DateTime dt_HoraSalida = Convert.ToDateTime("01/01/0001");
                oGesParam = new GestorTblParametros();
                string MensajeError = "";

                try
                {
                    Decimal ParamDctoHrsTrabMantto = Convert.ToDecimal(oGesParam.ObtenerValorParamtroPorID(oGesParam.ObtenerParamID(1, StringConstantes.PAR_COD_DCTO_TRAB_MANTTO)));
                    Decimal ParamDctoHrsTrabPista = Convert.ToDecimal(oGesParam.ObtenerValorParamtroPorID(oGesParam.ObtenerParamID(1, StringConstantes.PAR_COD_DCTO_TRAB_PISTA)));

                    if (txtFecETA.Text.Length == 10 || DateTime.Parse(lblHraETA.Text) != StringConstantes.DT_FEC_INVALID)
                        dt_HoraLlegada = HH_Toolkit.ConvertirDateTime(txtFecETA.Text, txtHraETA.Text, lblHraETA.Text);
                    else
                        MensajeError += "La Fecha y Hora de Llegada es requerida ";

                    if (txtFecETD.Text.Length == 10 || DateTime.Parse(lblHraETD.Text) != StringConstantes.DT_FEC_INVALID)
                        dt_HoraSalida = HH_Toolkit.ConvertirDateTime(txtFecETD.Text, txtHraETD.Text, lblHraETD.Text);
                    else
                        MensajeError += "La Fecha y Hora de Salida es requerida ";

                    if (dt_HoraSalida < dt_HoraLlegada)
                        MensajeError += "La Hora de Salida debe ser mayor a la hora de llegada ";

                    //Si no existen errores calcular TAT y TEM
                    if (MensajeError.Length == 0)
                    {

                        //lblTATTEM.Text

                        GestorTblParametros oGesPar = new GestorTblParametros();
                        if (chkTransMantto.Checked)
                            lblTATTEM.Text = HH_Toolkit.TextoTATTEM(dt_HoraLlegada, dt_HoraSalida, Decimal.ToInt32(ParamDctoHrsTrabMantto));
                        else
                            lblTATTEM.Text = HH_Toolkit.TextoTATTEM(dt_HoraLlegada, dt_HoraSalida, Decimal.ToInt32(ParamDctoHrsTrabPista));
                    }
                    else
                    {
                        ShowMessage("Msg_TATTEM","AVISO" + MensajeError);
                    }
                }
                catch (Exception ex)
                {
                    ShowMessage("EXception_CalcTATTEM", "ERROR del sistema al calcular TAT TEM: " + ex.Message);
                }                
            }
        }
    }

    private void HabilitarGrabacion(bool hab)
    {
        imgRegInforme.Enabled = hab;
        if (hab)
        {
            imgRegInforme.ImageUrl = "../styles/a-main/BTgrabar.gif";
        }
        else
        {
            imgRegInforme.ImageUrl = "../styles/a-main/BTgrabar_Dis.gif";
        }
    }
    private void HabilitarModificacion(bool hab)
    {
        imgEditInforme.Enabled = hab;
        if (hab)
        {
            imgEditInforme.ImageUrl = "../styles/a-main/BTModificar.gif";
        }
        else
        {
            imgEditInforme.ImageUrl = "../styles/a-main/BTModificar_Dis.gif";
        }
    }
    private void HabilitarCierre(bool hab)
    {

        imgCerrarInforme.Enabled = hab;
        if (hab)
        {
            imgCerrarInforme.ImageUrl = "../styles/a-main/BTCerrarInforme.gif";

        }
        else
        {
            imgCerrarInforme.ImageUrl = "../styles/a-main/BTCerrarInforme_Dis.GIF";
        }
    }
    //private void HabilitarEliminacion(bool hab)
    //{
    //    imgEliminarPrg.Enabled = hab;
    //    if (hab)
    //    {
    //        imgEliminarPrg.ImageUrl = "../styles/a-main/BTEliminar.gif";
    //    }
    //    else
    //    {
    //        imgimgEliminarPrg.ImageUrl = "../styles/a-main/BTEliminar_Dis.gif";
    //    }
    //}

    private void HabilitarCambiarOrden(bool hab)
    {
        img_CambiarOrden.Enabled = hab;
        if (hab)
        {
            img_CambiarOrden.ImageUrl = "../styles/a-main/gridCambiarOrden.png";            
        }
        else
        {
            img_CambiarOrden.ImageUrl = "../styles/a-main/gridCambiarOrdenDis.png";
        }
    }

    private void HabilitarCalculoTATTEM(bool hab)
    {
        imgCalcularTATTEM.Enabled = hab;
        if (hab)
        {
            imgCalcularTATTEM.ImageUrl = "../styles/a-main/BTCalcularTATTEM.gif";
        }
        else
        {
            imgCalcularTATTEM.ImageUrl = "../styles/a-main/BTCalcularTATTEM_Dis.gif";
        }
    }

    private void HabilitarIngresoTrabajos(bool Opcion)
    {
        if (Opcion)
        {
            imgAddTrab.ImageUrl = "../styles/a-main/bot_trabajo_act.gif";
        }
        else
        {
            imgAddTrab.ImageUrl = "../styles/a-main/bot_trabajo_dis.gif";
        }
        imgAddTrab.Enabled = Opcion;
    }

    private void HabilitarConsultaPizarra(bool opc)
    {
        if (opc)
        {
            ImageButton1.ImageUrl = "../styles/a-main/look.gif";
        }
        else
            ImageButton1.ImageUrl = "../styles/a-main/img_lupa.gif";

        ImageButton1.Enabled = opc;
    }

}
